home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / minix / libsrc~1.z / libsrc~1 / stcatch.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1989-12-28  |  1.3 KB  |  67 lines

  1. #
  2. | public symbols
  3.     .globl    _begsig
  4. | external references
  5.     .globl    _vectab
  6.     .globl    _M
  7. #ifdef ACK
  8.         .text
  9.         .data
  10.         .bss
  11. #endif ACK
  12.  
  13. #ifdef ALCYON
  14. #define FREEREGS d0-d2/a0-a2
  15. #endif
  16. #ifdef ACK
  17. #define    FREEREGS d0-d2/a0-a1
  18. #endif
  19. #ifdef __GNUC__
  20. #define FREEREGS d0-d1/a0-a1
  21. #endif
  22.  
  23. mtype = 2            | M+mtype = &M.m_type
  24.         .text
  25.         .even
  26. _begsig:
  27.     moveml    FREEREGS,sp@-
  28.     clrl    d0
  29. #ifdef ALCYON
  30.     movw    sp@(24),d0    | d0 = signal number
  31. #endif
  32. #ifdef ACK
  33.     movw    sp@(20),d0    | d0 = signal number
  34. #endif
  35. #ifdef __GNUC__
  36.     movw    sp@(16),d0    | d0 = signal number
  37. #endif
  38.     movw    _M+mtype,sp@-    | push status of last system call
  39. #ifdef __GNUC__
  40. #ifdef __MSHORT__
  41.     movw    d0,sp@-    | func called with signal number as arg
  42. #else
  43.     extl    d0
  44.     movl    d0,sp@-    | func called with signal number as arg
  45. #endif
  46. #else
  47.     movw    d0,sp@-    | func called with signal number as arg
  48. #endif
  49.     asll    #2,d0        | pointers are four .bytes on 68000
  50.     movl    #_vectab,a0
  51.     movl    a0@(-4,d0:w),a0    | a0 = address of routine to call
  52.     jsr    a0@
  53. back:
  54. #ifdef __GNUC__
  55. #ifdef __MSHORT__
  56.     addql    #2,sp        | get signal number off stack
  57. #else
  58.     addql    #4,sp        | get signal number off stack
  59. #endif
  60. #else
  61.     addl    #2,sp        | get signal number off stack
  62. #endif
  63.     movw    sp@+,_M+mtype    | restore status of previous system call
  64.     moveml    sp@+,FREEREGS
  65.     addl    #2,sp        | remove signal number from stack
  66.     rtr
  67.